package com.zmn.oms.dubbo.interfaces.zmn.normal.perf;

import com.zmn.common.dto2.ResponseDTO;
import com.zmn.oms.dubbo.dto.common.perf.PerfOverviewRealtimeMetricDRO;
import com.zmn.oms.dubbo.dto.common.perf.PerfOverviewMetricDRO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

import java.time.Instant;
import java.time.LocalDate;
import java.util.List;
import java.util.Set;

/**
 * @author hankangshuai
 * @since 2019/12/26
 **/
@Api(value = "派单总览表远程接口")
public interface PerfOverviewRemoteService {
    /**
     * 统计派单总览表普通指标
     *
     * @param day 统计日
     * @return 派单总览表指标集合
     */
    @ApiOperation(value = "统计派单总览表普通指标")
    ResponseDTO<List<PerfOverviewMetricDRO>> listPerfOverviewMetric(@ApiParam("统计日") LocalDate day);

    /**
     * 获取派单总览表实时指标
     *
     * @param instant                 统计截止时间
     * @param includeMasterIdList 包含的工程师ID集合
     * @return 派单总览表扩展指标集合
     */
    @ApiOperation(value = "统计派单总览表实时指标")
    ResponseDTO<List<PerfOverviewRealtimeMetricDRO>> listPerfOverviewRealtimeMetric(@ApiParam("统计截止时间") Instant instant,
                                                                                    @ApiParam("包含的工程师ID集合") Set<Integer> includeMasterIdList);
    /**
     * 统计派单总览表实时指标相关的活跃工程师
     *
     * @param instant                 统计截止时间
     * @return 派单总览表扩展指标集合
     */
    @ApiOperation(value = "统计派单总览表实时指标相关的活跃工程师")
    ResponseDTO<Set<Integer>> listPerfOverviewRealtimeMetricActiveMasterId(@ApiParam("统计截止时间") Instant instant);
}
